package com.linghu.qqclient.service;

import com.linghu.qqcommon.Message;
import com.linghu.qqcommon.MessageType;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;

/**
 * @author 令狐荣豪
 * @version 1.0
 */
public class ClientConnectServerThread extends Thread{
    //该线程需要持有Socket
    private Socket socket;

    public ClientConnectServerThread(Socket socket) {//构造器可以接收socket对象
        this.socket = socket;
    }

    @Override
    public void run() {
        //因为线程需要在后台和服务器通信，因此我们需要while循环
        try {
            System.out.println("客户端线程，等待从读取服务端发送的消息");
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            Message message=(Message)ois.readObject();//如果服务器没有发送message对象，线程会阻塞在这里
            //判断这个Message类型，做相应的业务处理
            //如果读取到的是服务端返回的在线用户列表
            if (message.getMesType().equals(MessageType.MESSAGE_GET_ONLINE_FRIEND)){
                String[] onlineUsers = message.getContent().split(" ");
                System.out.println("=======当前在线用户列表=======");
                for (int i=0;i< onlineUsers.length;i++){
                    System.out.println("用户："+onlineUsers);
                }
            }else {
                System.out.println("是其他类型的message，暂时不处理。。。。");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public Socket getSocket() {//为了更方便得到Socket
        return socket;
    }
}
